#! /usr/local/bin/python
#-*- coding: utf_8 -*-

import unittest
import graphe

class TestGraph(unittest.TestCase):
	def setUp(self): # appelé avant chaque test
		self.graph = graphe.Graphe()

	def testVide(self):
		"""Teste avec un graphe vide.
		"""
		self.assertEqual(self.graph, {})
	
	def testAjouteSommet(self):
		"""Teste l'ajout d'un sommet.
		"""
		self.graph.ajouteSommet('A')
		self.assertEqual(self.graph, {'A' : {}})

	def testAjouteVoisin(self):
		"""Teste l'ajout de voisins avec les poids.
		"""
		self.graph.ajouteSommet('A')
		self.graph.ajouteSommet('B')
		self.graph.ajouteSommet('C')
		self.graph.ajouteSommet('D')
		self.graph.ajouteSommet('E')
		self.graph.ajouteSommet('F')

		self.graph.ajouteArrete('A', 'B', 3)

		self.assertEqual(self.graph, {\
				'A' : {'B':3},\
				'B' : {'A':3},\
				'C' : {},\
				'D' : {},\
				'E' : {},\
				'F' : {} })

	def testSuppressionSommet(self):
		"""Teste la suppression d'un sommet.
		"""
		self.graph.ajouteSommet('A')
		self.graph.supprimeSommet('A')
		self.assertEqual(self.graph, {})

	def testSuppressionArrete(self):
		"""Teste la suppression d'arrêtes.
		"""
		self.graph.ajouteSommet('A')
		self.graph.ajouteSommet('B')
		self.graph.ajouteSommet('C')
		self.graph.ajouteSommet('D')
		self.graph.ajouteSommet('E')
		self.graph.ajouteSommet('F')

		self.graph.ajouteArrete('A', 'B', 1)
		self.graph.ajouteArrete('A', 'C', 7)
		self.graph.ajouteArrete('B', 'F', 1984)
		self.graph.supprimeArrete('A', 'B')

		self.assertEqual(self.graph, {\
					'C' : {},\
					'D' : {},\
					'E' : {},\
					'F' : {} })

if __name__ == "__main__":
	suite = unittest.TestSuite()
	suite.addTest(unittest.makeSuite(TestGraph))
	unittest.TextTestRunner(verbosity=2).run(suite)